package com.zhangtai.modules.dto;


import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.zhangtai.config.LongJsonDeserializer;
import com.zhangtai.config.LongJsonSerializer;
import com.zhangtai.utils.Excel.ExcelAnnotation;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;


@Data
public class SecurityRecordReportDto {

    /**
     * 员工ID
     */
    @ApiModelProperty(value="员工ID")
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long oid;

    @ExcelAnnotation(rowName = "工号")
    @ApiModelProperty(value="工号")
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private String code;

    @ExcelAnnotation(rowName = "姓名")
    @ApiModelProperty(value="姓名")
    private String name;

    @ExcelAnnotation(rowName = "身份证号")
    @ApiModelProperty(value="身份证号")
    private String  idcard ;

    @ApiModelProperty(value="体系id")
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long  jobSystemId ;

    @ApiModelProperty(value="公司id")
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long  orgId ;

    @ExcelAnnotation(rowName = "公司名称")
    @ApiModelProperty(value="公司名称")
    private String  orgName ;


    @ExcelAnnotation(rowName = "部门名称")
    @ApiModelProperty(value="部门名称")
    private String  departMentName;

    @ExcelAnnotation(rowName = "体系")
    @ApiModelProperty(value="体系名称")
    private String  jobSystem;


    @ExcelAnnotation(rowName = "缴纳地")
    @ApiModelProperty(value="社保缴纳地")
    private String cityName;

    @ExcelAnnotation(rowName = "社保缴纳单位全称")
    @ApiModelProperty(value="社保缴纳单位全称")
    private String unitName;

//    @ExcelAnnotation(rowName = "参保时间")
//    @ApiModelProperty(value="参保时间")
    private String createUiTime;

//    @ExcelAnnotation(rowName = "参保时间")
//    @JsonFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value="参保时间")
    private Date createTime;

    @ExcelAnnotation(rowName = "参保时间")
//    @JsonFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value="参保时间")
    private String canbaoTime;




    /**
     * 记录ID
     */
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    @ApiModelProperty(value="记录ID")
    private Long recordId;






    /**
     * 养老保险个人缴纳
     */
    @ExcelAnnotation(rowName = "养老保险个人缴纳额")
    @ApiModelProperty(value="养老保险个人缴纳")
    private BigDecimal endowmentInsurancePerson;
    /**
     * 养老保险公司缴纳
     */
    @ExcelAnnotation(rowName = "养老保险公司缴纳额")
    @ApiModelProperty(value="养老保险公司缴纳")
    private BigDecimal endowmentInsuranceOrg;





    /**
     * 医疗保险个人缴纳
     */
    @ExcelAnnotation(rowName = "医疗保险个人缴纳额")
    @ApiModelProperty(value="医疗保险个人缴纳")
    private BigDecimal medicalInsurancePerson;

    /**
     * 医疗保险公司缴纳
     */
    @ExcelAnnotation(rowName = "医疗保险公司缴纳额")
    @ApiModelProperty(value="医疗保险公司缴纳")
    private BigDecimal medicalInsuranceOrg;

    /**
         * 失业保险个人缴纳
     */
    @ExcelAnnotation(rowName = "失业保险个人缴纳")
    @ApiModelProperty(value="失业保险个人缴纳")
    private BigDecimal unemploymentInsurancePerson;

    /**
     * 失业保险公司缴纳
     */
    @ExcelAnnotation(rowName = "失业保险公司缴纳")
    @ApiModelProperty(value="失业保险公司缴纳")
    private BigDecimal unemploymentInsuranceOrg;

    /**
     * 工伤保险个人缴纳
     */
    @ExcelAnnotation(rowName = "工伤保险个人缴纳")
    @ApiModelProperty(value="工伤保险个人缴纳")
    private BigDecimal injuryInsurancePerson;
    /**
     * 工伤保险公司缴纳
     */
    @ExcelAnnotation(rowName = "工伤保险公司缴纳")
    @ApiModelProperty(value="工伤保险公司缴纳")
    private BigDecimal injuryInsuranceOrg;


    @ExcelAnnotation(rowName = "生育险个人缴纳")
    @ApiModelProperty(value="生育险个人缴纳")
    private BigDecimal maternityInsurancePerson;

    @ExcelAnnotation(rowName = "生育险公司缴纳")
    @ApiModelProperty(value="生育险公司缴纳")
    private BigDecimal maternityInsuranceOrg;

    @ExcelAnnotation(rowName = "重大医疗个人缴纳")
    @ApiModelProperty(value="重大医疗个人缴纳")
    private BigDecimal largerMedicalPerson;



    @ExcelAnnotation(rowName = "重大医疗公司缴纳")
    @ApiModelProperty(value="重大医疗公司缴纳")
    private BigDecimal largerMedicalOrg;

    @ExcelAnnotation(rowName = "残疾保障金个人缴纳")
    @ApiModelProperty(value="残疾保障金个人缴纳")
    private BigDecimal disabledEmploymentPerson;

    @ExcelAnnotation(rowName = "残疾保障金公司缴纳")
    @ApiModelProperty(value="残疾保障金公司缴纳")
    private BigDecimal disabledEmploymentOrg;

    @ExcelAnnotation(rowName = "个人缴纳合计")
    @ApiModelProperty(value="个人缴费合计")
    private BigDecimal personCostTotal;

    @ExcelAnnotation(rowName = "公司缴纳合计")
    @ApiModelProperty(value="公司缴费合计")
    private BigDecimal orgCostTotal;




    @ExcelAnnotation(rowName = "养老保险基数")
    @ApiModelProperty(value="养老保险基数")
    private BigDecimal endowmentInsuranceBase;

    @ExcelAnnotation(rowName = "失业保险基数")
    @ApiModelProperty(value="失业保险基数")
    private BigDecimal unemploymentInsuranceBase;

    @ExcelAnnotation(rowName = "医疗保险基数")
    @ApiModelProperty(value="医疗保险基数")
    private BigDecimal medicalInsuranceBase;

    @ExcelAnnotation(rowName = "工伤保险基数")
    @ApiModelProperty(value="工伤保险基数")
    private BigDecimal injuryInsuranceBase;

    @ExcelAnnotation(rowName = "大额医疗基数")
    @ApiModelProperty(value="大额医疗基数")
    private BigDecimal largerMedicalBase;

    @ExcelAnnotation(rowName = "生育险基数")
    @ApiModelProperty(value="生育险基数")
    private BigDecimal maternityInsuranceBase;

    @ExcelAnnotation(rowName = "残疾保障金基数")
    @ApiModelProperty(value="残疾保障金基数")
    private BigDecimal disabledEmploymentBase;



/**
 * ------------------------
 */


    /**
     * 养老保险个人缴纳比例
     */
    @ExcelAnnotation(rowName = "养老保险个人缴纳比例")
    @ApiModelProperty(value="养老保险个人缴纳比例")
    private BigDecimal endowmentInsurancePersonRate;


    /**
     * 养老保险公司缴纳比例
     */
    @ExcelAnnotation(rowName = "养老保险公司缴纳比例")
    @ApiModelProperty(value="养老保险公司缴纳比例")
    private BigDecimal endowmentInsuranceOrgRate;/**



     /**
     * 医疗保险个人缴纳比例
     */
    @ExcelAnnotation(rowName = "医疗保险个人缴纳比例")
    @ApiModelProperty(value="医疗保险个人缴纳比例")
    private BigDecimal medicalInsurancePersonRate;

    /**
     * 医疗保险公司缴纳比例
     */
    @ExcelAnnotation(rowName = "医疗保险公司缴纳比例")
    @ApiModelProperty(value="医疗保险公司缴纳比例")
    private BigDecimal medicalInsuranceOrgRate;


    /**
     * 失业保险个人缴纳比例
     */
    @ExcelAnnotation(rowName = "失业保险个人缴纳比例")
    @ApiModelProperty(value="失业保险个人缴纳比例")
    private BigDecimal unemploymentInsurancePersonRate;
    /**
     * 失业保险公司缴纳比例
     */
    @ExcelAnnotation(rowName = "失业保险公司缴纳比例")
    @ApiModelProperty(value="失业保险公司缴纳比例")
    private BigDecimal unemploymentInsuranceOrgRate;




    /**
     * 工伤保险个人缴纳比例
     */
    @ExcelAnnotation(rowName = "工伤保险个人缴纳比例")
    @ApiModelProperty(value="工伤保险个人缴纳比例")
    private BigDecimal injuryInsurancePersonRate;
    /**
     * 工伤保险公司缴纳比例
     */
    @ExcelAnnotation(rowName = "工伤保险公司缴纳比例")
    @ApiModelProperty(value="工伤保险公司缴纳比例")
    private BigDecimal injuryInsuranceOrgRate;




    @ExcelAnnotation(rowName = "生育险个人缴纳比例")
    @ApiModelProperty(value="生育险个人缴纳比例")
    private BigDecimal maternityInsurancePersonRate;



    @ExcelAnnotation(rowName = "生育险公司缴纳比例")
    @ApiModelProperty(value="生育险公司缴纳比例")
    private BigDecimal maternityInsuranceOrgRate;
//    /**
//     * 公积金个人缴纳
//     */
//    @ApiModelProperty(value="公积金个人缴纳")
//    private BigDecimal reservedFundsPerson;
//    /**
//     * 公积金公司缴纳
//     */
//    @ApiModelProperty(value="公积金公司缴纳")
//    private BigDecimal reservedFundsOrg;
//    /**
//     * 公积金个人缴纳比例
//     */
//    @ApiModelProperty(value="公积金个人缴纳比例")
//    private BigDecimal reservedFundsPersonRate;
//    /**
//     * 公积金公司缴纳比例
//     */
//    @ApiModelProperty(value="公积金公司缴纳比例")
//    private BigDecimal reservedFundsOrgRate;


    @ExcelAnnotation(rowName = "重大医疗个人缴纳比例")
    @ApiModelProperty(value="重大医疗个人缴纳比例")
    private BigDecimal largerMedicalPersonRate;



    @ExcelAnnotation(rowName = "重大医疗公司缴纳比例")
    @ApiModelProperty(value="重大医疗公司缴纳比例")
    private BigDecimal largerMedicalOrgRate;
    /**
     *
     */
//    @ApiModelProperty(value="参保时间")
//    private Date createTime;


    /**
     * 状态 0未处理 1核对中 2已完结
     */
    @ApiModelProperty(value="状态 0未处理 1核对中 2已完结")
    private Integer status;
    /**
     * 记录类型  0：增员  1：减员 2：正常
     */
    @ApiModelProperty(value="记录类型  0：增员  1：减员 2：正常")
    private Integer type;
    /**
     *
     */
    @ApiModelProperty(value="删除标识符")
    private Integer isDelete;
    /**
     * 操作时间
     */
    @ApiModelProperty(value="参保时间")
    private Date operateTime;
    /**
     * 操作人工号
     */
    @ApiModelProperty(value="操作人工号")
    private String operateCode;
    /**
     * 操作人姓名
     */
    @ApiModelProperty(value="操作人姓名")
    private String operateName;
    /**
     *
     */
    @ApiModelProperty(value="缴费单位id")
    private Long unitId;








    @ExcelAnnotation(rowName = "残疾保障金个人缴纳比例")
    @ApiModelProperty(value="残疾保障金个人缴纳比例")
    private BigDecimal disabledEmploymentPersonRate;



    @ExcelAnnotation(rowName = "残疾保障金公司缴纳比例")
    @ApiModelProperty(value="残疾保障金公司缴纳比例")
    private BigDecimal disabledEmploymentOrgRate;


}
